package com.qdu.spring.blog.service;

import com.qdu.spring.blog.mapper.IMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

public class BaseService<T,E> {
    @Autowired
    private IMapper<T,E> mapper;


    /**
     * 查询所有
     */
    public List<T> selectAll()
    {
        return selectByExample(null);
    }

    /**
     * 通过example查询记录条数
     */
    public long countByExample(E example)
    {
        return mapper.countByExample(example);
    }

    /**
     * 通过example删除对象
     */
    public int deleteByExample(E example)
    {
        return mapper.deleteByExample(example);
    }

    /**
     * 通过主键删除对象
     */
    public int deleteByPrimaryKey(Integer id)
    {
        return mapper.deleteByPrimaryKey(id);
    }
    /**
     * 插入对象
     */
    public int insert(T record)
    {
        return mapper.insert(record);
    }

    /**
     * 选择性插入对象
     */
    public int insertSelective(T record)
    {
        return mapper.insertSelective(record);
    }

    /**
     * 通过example查询对象列表
     */
    public List<T> selectByExample(E example)
    {
        return mapper.selectByExample(example);
    }

    /**
     * 通过主键查询对象
     */
    public T selectByPrimaryKey(Integer id)
    {
        return mapper.selectByPrimaryKey(id);
    }

    /**
     * 选择性更新记录
     */
    public int updateByExampleSelective(@Param("record") T record, @Param("example") E example)
    {
        return mapper.updateByExampleSelective(record, example);
    }

    /**
     * 更新记录
     */
    public int updateByExample(@Param("record") T record, @Param("example") E example)
    {
        return mapper.updateByExample(record, example);
    }

    /**
     * 通过主键选择性更新
     */
    public int updateByPrimaryKeySelective(T record)
    {
        return mapper.updateByPrimaryKeySelective(record);
    }

    /**
     * 通过主键更新记录
     */
    public int updateByPrimaryKey(T record)
    {
        return mapper.updateByPrimaryKey(record);
    }
}
